/**
在Node.js中使用 `mysql2` 库时，预处理语句（Prepared Statements）是一种重要的功能，它可以提高SQL查询的安全性和性能。
  1. 什么是预处理语句
  预处理语句是一种在执行SQL查询之前先将查询语句编译并存储在数据库中的方法。它允许我们使用参数化查询，以减少SQL注入攻击的风险，并且在多次执行相同查询时可以提高性能。

  2. 使用预处理语句的基本步骤
   1. 创建数据库连接
  首先，像往常一样创建与MySQL数据库的连接：
  const mysql = require('mysql2/promise');

  async function main() {
    const connection = await mysql.createConnection({
      host: 'localhost',
      user: '用户名',
      password: '密码',
      database: '数据库名'
    });

    // 其他操作...
  }
   2. 使用预处理语句
  使用 `?` 占位符来定义预处理语句中的参数。例如，插入数据时：
  const sql = 'INSERT INTO 表名 (列1, 列2) VALUES (?, ?)';
  const values = ['值1', '值2'];

  const [result] = await connection.execute(sql, values);
  console.log('插入成功，ID: ' + result.insertId);
  在这里， `execute` 方法会将 `values` 数组中的值自动绑定到SQL语句中的占位符。

   3. 查询数据
  同样地，可以使用预处理语句查询数据：
  const sql = 'SELECT * FROM 表名 WHERE 列1 = ?';
  const values = ['某个值'];

  const [rows] = await connection.execute(sql, values);
  console.log(rows);
  3. 预处理语句的优点
  - 安全性：通过使用参数化查询，可以有效防止SQL注入攻击。
  - 性能：对于重复执行的查询，数据库可以缓存预处理语句的执行计划，从而提高性能。
  - 可读性：使用占位符使得SQL语句更简洁，易于阅读和维护。

  4. 关闭连接
  在完成所有操作后，记得关闭数据库连接：
  await connection.end();
  总结
  使用 `mysql2` 库的预处理语句可以有效提高应用程序的安全性和性能。通过参数化查询，开发者可以更安全地与数据库交互，并且在多次执行相同查询时享受更好的性能。以上是对 `mysql2` 中预处理语句的基本使用和优势的总结。
 */
const mysql = require("mysql2");

const connection = mysql.createConnection({
  host: "localhost",
  port: 3306,
  database: "node_mysql2",
  user: "root",
  password: "root",
});

const statement = "select * from `products` where price > ? and score > ?";

// 预处理语句
connection.execute(statement, [100, 2], (err, value, fields) => {
  console.log(value); // 查询结果
});
